home *** CD-ROM | disk | FTP | other *** search
/ Directorty Opus 5 - Magellan 2 / Opus 5 - Magellan 2.iso / Extras / wolledopus / dopus5 / arexx / Mülleimer.dopus5 < prev   
Text File  |  1997-11-12  |  6KB  |  245 lines

  1. /*
  2. $VER: Mülleimer.dopus5 V0.3 (4.11.1997) © Marco Wollkopf
  3. E-Mail: Marco.Wollkopf@t-online.de
  4. Homepage: http://home.t-online.de/home/Marco.Wollkopf
  5.  
  6. Mülleimer für DOpus5.62+
  7. erzeugt ein Mülleimer AppIcon auf dem DOpus Desktop, wird eine Datei oder
  8. ein Verzeichnis auf das AppIcon gezogen wird es in ein Verzeichnis Deiner
  9. wahl verschoben.
  10.  
  11.  
  12. Einstellungen:
  13. -----------------------------------------------
  14. [ARexx] DOpus5:ARexx/Mülleimer.dopus5 {Qp}
  15. -----------------------------------------------
  16.  
  17. */
  18.  
  19. /* ------------------------ Bitte entsprechend Deiner Konfiguration ändern ------------------------ */
  20. trash   = 'WolleDisk:Trashcan'             /* Verzeichnis in das verschoben werden soll (ohne /)    */
  21. pic     = 'DOpus5:Icons/Trashcan'          /* Piktogramm für den Mülleimer (Dateiname ohne .info!)  */
  22. text    = 'Mülleimer'                      /* Piktogrammbeschriftung                                */
  23. iconpos = 'DOpus5:Settings/pos_trash.icon' /* Datei in der die Iconposition gespeichert werden soll */
  24. /* -------------------------------------- Ende Konfiguration -------------------------------------- */
  25.  
  26.  
  27. options results
  28. options failat 11
  29. parse arg port
  30.  
  31. /* ---------------------------------------------- */
  32.  
  33. IF port ~= "" THEN /* port holen */
  34.     ADDRESS value(port)
  35. ELSE DO
  36.     say "Script muß von DirOpus aufgerufen werden"
  37.     exit
  38. END
  39.  
  40. /* ---------------------------------------------- */
  41.  
  42. if ~show('l','rexxsupport.library') then
  43.     call addlib('rexxsupport.library',0,-30,0)
  44.  
  45.  
  46. /* --- set up menu items ------------------------ */
  47.  
  48. iconmenu.count=2
  49. iconmenu.0='Inhalt anzeigen'
  50. iconmenu.1='Mülleimer leeren'
  51.  
  52. call getpos /* --- iconposition holen --- */
  53.  
  54. /* --- add an icon ------------------------------  */
  55.  
  56. dopus addappicon 'trash-handler' text 1 position info snap close quotes local menu iconmenu. icon pic
  57. icon=result
  58.  
  59. flag = 0
  60.  
  61. /* --- abfrage iconaktionen ---------------------- */
  62.  
  63. do while flag = 0
  64.   call openport('trash-handler')
  65.     call waitpkt('trash-handler')
  66.     packet=getpkt('trash-handler')
  67.  
  68.     arg0=getarg(packet,0)
  69.     arg1=getarg(packet,1)
  70.     arg2=getarg(packet,2)
  71.     arg3=getarg(packet,3)
  72.     arg4=getarg(packet,4)
  73.  
  74.     call reply(packet,0)
  75.  
  76.     select
  77.         when arg0 = 'info' then call info
  78.         when arg0 = 'doubleclick' then call newlister    
  79.         when arg0 = 'dropfrom' then call verschieben
  80.         when arg0 = 'snapshot' then call setpos
  81.         when arg0 = 'unsnapshot' then call delpos
  82.         when arg0 ='menu' then do 
  83.             if arg2 = 0 then call newlister
  84.             if arg2 = 1 then call leeren
  85.          end
  86.         when arg0 = 'close' then flag = 1 /* --- schleife beenden --- */
  87.         when arg0 = 'removed' then flag = 2 /* --- schleife beenden --- */
  88.     end
  89. end
  90.  
  91. /* --- icon entfernen --------------------------- */
  92.  
  93. if flag~=2 then dopus remappicon icon
  94. exit
  95.  
  96. /* --- neuen lister öffnen ---------------------- */
  97.  
  98. newlister:
  99.     lister new trash
  100.     tr = result
  101.     lister wait tr
  102.     lister set tr title "Mülleimer für DOpus"
  103.     lister set tr field 4 "Originalverzeichnis"
  104.     lister refresh tr full
  105.     lister set tr label "Mülleimer für DOpus"
  106. return
  107. exit
  108.  
  109. /* --- mülleimer leeren ------------------------- */
  110.  
  111. leeren:
  112.     dopus request "'Wirklich den Mülleimer leeren?"||D2C(10)||"Alle Daten gehen verloren!' _leeren|_nicht leeren"
  113.     if rc = 0 then return
  114.     lister new trash 
  115.     handle = result
  116.     lister wait handle
  117.     lister set handle busy on wait
  118.     lister query handle entries stem ein.
  119.  
  120.     /* alles selekt */
  121.     do c=0 to ein.count-1
  122.         lister select handle ein.c on
  123.     end
  124.     
  125.     lister refresh handle
  126.     lister set handle busy off
  127.     command wait source handle delete
  128.     lister request handle '"Der Mülleimer ist jetzt geleert."'
  129.     lister close handle
  130. return
  131. exit
  132.  
  133. /* --- objekte in den mülleimer verschieben ----- */
  134.  
  135. verschieben:
  136.  
  137.     /* --- wenn objekt vom desktop --- */
  138.     if arg3 = 0 then do
  139.         dopus request '"Der Mülleimer funktioniert nur mit Objekten aus Dateilistern"'
  140.         return
  141.     end
  142.  
  143.     call makestem /* --- stem erzeugen --- */
  144.     lister query arg3 path
  145.     pfad = result
  146.     do c=0 to ein.count
  147.         command wait move '"'||pfad||ein.c||'"' to trash quiet
  148.         command wait comment '"'||trash||'/'||ein.c||'"' pfad
  149.         lister remove arg3 ein.c
  150.     end
  151.     lister refresh arg3 date
  152. return
  153. exit
  154.  
  155.  
  156. makestem: /* --- stem aus arg2 erzeugen --- */
  157.     handle = arg3
  158.     lister query handle path
  159.     pfad = result
  160.     lister query handle mode /* --- listermodus holen --- */
  161.     modus = result
  162.  
  163.     /* --- wenn modus text --- */
  164.     if modus = 'name' then do    
  165.         files = arg2
  166.         c=0
  167.         ein.count = c
  168.         x=0
  169.         do while x=0 /* --- files holen --- */
  170.             files = delstr(files,pos('"',files),1)
  171.             file = substr(files,1,pos('"',files)-1)
  172.             files = delstr(files,1,pos('"',files)+1)
  173.             if files = "" then x=1
  174.             ein.c = file
  175.             c = c+1
  176.  
  177.             if x=1 then do /* --- wenn nur eine dat selektiert dann von dopus .info nicht mit übergeben, korrektur dafür --- */
  178.                 id c=1 then do
  179.                     if exists(pfad||file||'.info') then do
  180.                         ein.c = file||'.info'
  181.                         c = c+1
  182.                     end
  183.                 end
  184.             end
  185.             
  186.             if files= "" then /* --- wenn arg2 am ende --- */
  187.             ein.count = c-1
  188.         end
  189.     else do /* --- wenn listermodus nicht text --- */
  190.         files = arg2
  191.         c=0
  192.         ein.count = c
  193.         x=0
  194.         do while x=0
  195.             files = delstr(files,pos('"',files),1)
  196.             file = substr(files,1,pos('"',files)-1)
  197.             files = delstr(files,1,pos('"',files)+1)
  198.             if files = "" then x=1
  199.             ein.c = file
  200.             c = c+1
  201.             if exists(pfad||file||'.info') then do
  202.                 ein.c = file||'.info'
  203.                 c = c+1
  204.             end
  205.             if files= "" then
  206.             ein.count = c-1
  207.         end
  208.     end
  209. return
  210. exit
  211.  
  212.  
  213. /* --- Iconpositionierung ------------------------ */
  214.  
  215. getpos: /* --- iconposition holen --- */
  216.     if open(posi,iconpos) then do
  217.         position = pos||" "||readln(posi)
  218.       call close(posi)
  219.     end
  220.     else position = ""
  221. return
  222. exit
  223.  
  224. setpos: /* --- iconposition setzen --- */
  225.     if open(posi,iconpos,w) then do
  226.         call writeln(posi,arg2)
  227.         call close(posi)
  228.     end
  229. return
  230. exit
  231.  
  232. delpos: /* --- iconposition löschen --- */
  233.     position = ""
  234.     if exists(iconpos) then do
  235.         command delete iconpos quiet
  236.     end
  237. return
  238. exit
  239.  
  240. /* --- programminformation ---------------------- */
  241.  
  242. info:
  243.     dopus request "'Mülleimer für DOpus V0.3 (11.11.1997)"||D2C(10)||D2C(10)||"Copyright 1997 by Marco Wollkopf"||D2C(10)||D2C(10)||"Kommentare, Fragen & Fehlermeldungen an:"||D2C(10)||"Marco.Wollkopf@t-online.de'"
  244. return
  245. exit